package grape.common.service.query;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import grape.common.service.po.IDBasePo;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 一个根据实体查询的基础对象，主要是可以数据额外的参数，比如时间范围等
 * @param <Po>
 */
@Data
@EqualsAndHashCode(callSuper=false)
public class BasePoQuery<Po extends IDBasePo<?,?>> extends BaseQuery {
    // 实体查询对象，可以根据实体按条件查询
    private Po poQuery;
    // 可以直接使用mybatisPlus的查询构造器来添加额外参数，但这样有一个问题是远程rpc调用可能会有想不到的问题
    // mybatisPlus官方也声明了这一点，所以如果是远程调用参数请不要使用该构造器
    Wrapper<Po> queryWrapper;

    /**
     * 是否忽略poquery的条件，而只用queryWrapper
     * @return
     */
    public boolean queryWrapperOnly(){
        return false;
    }
}
